import projectManagerLinks from '../models/projectManagerLink'
import Conflicted from '../errors/conflicted'
import NotFound from '../errors/NotFoundError'
import BadRequest from '../errors/badReques'
import { CREATED_CODE } from '../errors/statusCode'

export const createProjectManagerLink = (req, res, next) => {
  const {
    manager,
    project
  } = req.body;
  projectManagerLinks.create({
    _id: project + '|' + manager,
    manager,
    project
  })
    .then((projectManagerLink) => res.send(projectManagerLink))
    .catch((evt) => {
      if (evt.code === 11000) {
        next(new Conflicted('Такая запись уже существует'))
      }
      if (evt.name === 'ValidationError') {
        next(
          new BadRequest(
            'Переданы некорректные данные при создании карточки сотрудника',
          ),
        );
      } else {
        next(evt)
      }
    })
}
export  const getProjectManagerLinks = (req, res, next) => {
  projectManagerLinks.find(req.body)
    .then((projectManagerLink) => {
      res.send(projectManagerLink);
    })
    .catch(next)
}

export const deleteProjectManagerLink = (req, res, next) => {
  const {
    project,
    manager
  } = req.body
  projectManagerLinks.findOneAndDelete({project, manager})
    .orFail(() => {
      throw new NotFound('запись не найдена')
    })
    .then((projectManagerLinks) => {
      res.send(projectManagerLinks)
    })
    .catch((evt) => {
      if (evt.code === 11000) {
        next(new Conflicted('Такая запись уже существует'))
      } else if (evt.name === 'ValidationError') {
        next(new BadRequest('Переданы некорректные данные при удалении записи'))
      } else {
        next(evt)
      }
    })
}
